<?php

// Classe "outils" pour les requêtes SQL
abstract class Req extends Pdo2 {
	
    // Requete d'insertion
    public static function inserer($requete, $tableauDeValeur = null) {
        
        $requetePreparee = self::getPdo()->prepare($requete);
        
        if($tableauDeValeur == null)
            $requeteReussie = $requetePreparee->execute();
        else
            $requeteReussie = $requetePreparee->execute($tableauDeValeur);
        
        if( ! $requeteReussie )
            return FALSE;
        else 
            return TRUE;
    }
    
    // Requete d'affichage d'une seule ligne
    public static function selectionner($requete) {
        
        $requetePreparee = self::getPdo()->prepare($requete);
        $requeteReussie = $requetePreparee->execute();
        
        if( ! $requeteReussie )
            return FALSE;
        
        return $requetePreparee->fetch(PDO::FETCH_OBJ);
    }

    // Requete d'affichage de plusieurs lignes
    public static function selectionnerTous($requete) {
        
        $requetePreparee = self::getPdo()->prepare($requete);
        $requeteReussie = $requetePreparee->execute();
        
        if( ! $requeteReussie )
            return FALSE;
        
        return $requetePreparee->fetchAll(PDO::FETCH_OBJ);
    }
    
    // Requete de suppression
    public static function effacer($requete) {
    	
        $requetePreparee = self::getPdo()->prepare($requete);
        $requeteReussie = $requetePreparee->execute();
        
        if( ! $requeteReussie )
            return FALSE;
        else
            return TRUE;
    }

    // Modification dans la base des éléments uniquement modifier
	public static function modifier($id, array $table, array $valeurChamp) {
		
		// Récupération des informations déjà existantes
		$sql = "SELECT *
                		FROM $table[0]
                		WHERE $table[1] = ".$id." ;";
    
		// Tableau des résultats
		// Je n'utilise pas la méthode selectionner car je dois utiliser un indice
		$requetePreparee = self::getPdo()->prepare($sql);
		$requeteReussie = $requetePreparee->execute();
		$resultatAffichage =  $requetePreparee->fetch(PDO::FETCH_NUM);
		
        // Définition des variables
        $modification = false;

        // Début de la requete 
        $sql = "UPDATE $table[0] SET ";
        
        // Parcours des éléments retournés
        for( $i = 0; $i < count($resultatAffichage); $i++){
        	
        	if ( trim($valeurChamp[$i]) != trim($resultatAffichage[$i])) {
        		 
        		if($modification)
        			$sql.= " ,".$table[($i+1)]. " = '".trim($valeurChamp[$i])."' ";
        		
        		else 
        			$sql.= " ".$table[($i+1)]. " = '".trim($valeurChamp[$i])."' ";
        		
        		$modification = true;
        	}
        }
        
        $sql .= " WHERE $table[1] = ".$valeurChamp[0];
         
        //Préparation et exécution requête uniquement si modifications faites
        if ($modification){
	        
        	$requetePreparee = self::getPdo()->prepare($sql);
	     	$requeteReussie = $requetePreparee->execute();
	     	
	     	if($requeteReussie)
	     		return true;
	     	
	     	else 
	     		// Erreur
	     		return false;
        }
        
        // Erreur dans l'ajout
		return false;	
	}

}